// 为什么instanceof只能判断对象类型？
// 实现原理
// let str = 'abc'  // new String('abc')
// console.log(str instanceof String);  // false

// str.__proto__ === String.prototype  // 不具备对象原型

// function Person(name) {
//     this.name = name
// }

// let p = new Person('xiaoyang')

// 实例对象的隐式原型等于构造函数的显示原型
// p.__proto__ === Person.prototype

// 手写instanceof
function Person(name) {
    this.name = name
}

let p = new Person('xiaoyang')

function instance_of(l,r) {
    let prototype = r.prototype
    let proto = l.__proto__

    // if (r = l) {
    //     return true
    // } else {
    //     return false
    // }

    while(true) {

        if (proto === null) {
            return false
        }
        
        if (proto === prototype) {
            return true
        }
        proto = proto.__proto__
    }
}

console.log(instance_of(p, Object));  // true